package in.co.codedoc.rpc;

import in.co.codedoc.cg.annotations.IsAJSONMapper;
import in.co.codedoc.json.JSONArrayValue;
import in.co.codedoc.json.JSONEncoderMethod;
import in.co.codedoc.json.JSONObjectValue;
import in.co.codedoc.json.JSONUtil;

@IsAJSONMapper
@SuppressWarnings("unchecked")
public class ResultPageJSONMapper
{
	@JSONEncoderMethod
	public static JSONObjectValue Encode(ResultPage resultPage)
	{
		JSONObjectValue json = new JSONObjectValue();
		
		json.SetProperty
		(
			"entries",
			(!resultPage.GetEntries().isEmpty())
			?
				JSONUtil.Encode(resultPage.GetEntries(),"java.util.ArrayList<" + resultPage.GetEntries().get(0).getClass().getCanonicalName() + ">")
			:
				new JSONArrayValue()
		);
 		json.SetProperty
		(
			"totalEntries",
			JSONUtil.Encode(resultPage.GetTotalEntries(),"in.co.codedoc.cg.annotations.IntType")
		);
		return json;
	}
}
